博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC快速分页
阅读量:5297 次
发布时间:2019-06-14

本文共 3077 字,大约阅读时间需要 10 分钟。

using System;namespace CWHomeWebSite.Models{    public class PagingInfo    {        //项目总数量        public int TotalItems { get; set; }        //当前索引        public int PageIndex { get; set; }        //分页大小        public int PageSize { get; set; }        //页数        public int PageCount        {            get            {                return (int)Math.Ceiling((decimal)TotalItems / PageSize);            }        }    }}

创建视图对应的ViewModel

using CWHomeWebSite.Data.Entities;using System.Collections.Generic;namespace CWHomeWebSite.Models{    public class PostViewModel    {        //博客集合        public IEnumerable
Posts { get; set; } //分页参数 public PagingInfo PagingInfo { get; set; } }}

处理Controller视图方法

public ActionResult Index(int pageIndex = 1, int pageSize = 2)        {            //获取当前分页数据集合            var posts = this.repository.Posts          .OrderBy(p=>p.UpdateTime)                 .Skip((pageIndex - 1) * pageSize)                .Take(pageSize);            //将当前ViewModel传递给视图            return View(new PostViewModel            {                Posts = posts,                PagingInfo = new PagingInfo                {                    TotalItems = this.repository.Posts.Count(),                    PageIndex = pageIndex,                    PageSize = pageSize                }            });        }

在View中通过Html辅助器扩展方法处理PagingInfo

using CWHomeWebSite.Models;using System;using System.Web.Mvc;namespace CWHomeWebSite.Helper{    public static class PagingHelper    {        //HtmlHelper扩展方法,用于分页        public static MvcHtmlString Pagination(this HtmlHelper html, PagingInfo pageInfo,Func
pageLinks) { var htmlString = pageLinks(pageInfo); return MvcHtmlString.Create(htmlString); } }}
@model CWHomeWebSite.Models.PostViewModel@using CWHomeWebSite.Helper@{    ViewBag.Title = "主页";}
    @foreach (var post in Model.Posts) {
  • @post.Title
    | @post.CreateTime.ToShortDateString()

    @post.Description

    • @Html.ActionLink("更多", "Detail", "Home", new { @post.PostId }, new { @class = "button" })

  • }
@Html.Pagination(Model.PagingInfo, (info) => { var pagingString = "
    "; for (var i = 1; i <= info.PageCount; i++) { if (i == info.PageIndex) { pagingString += "
  • " + i + "
  • "; } else pagingString += "
  • " + i + "
  • "; } pagingString += "
"; return pagingString; })
@Html.Action("RecentWorks", "Work")

url跳转:

@Url.Action("Index", "Home", new { id=1})“生成的html是:”生成的url为: /Home/Index/1“

 

转载于:https://www.cnblogs.com/shy1766IT/p/5246486.html

你可能感兴趣的文章
【转帖】关于'eh vector constructor/destructor iterator'的讨论及类的内存分布模型
查看>>
十. 图形界面(GUI)设计9.列表和组合框
查看>>
10.17动手动脑
查看>>
操作系统实验一:并发程序设计
查看>>
互联网协议入门(一)
查看>>
Air Max 1 Men's Shoe Black/Team Red [NIKE-NO.12030]
查看>>
16_Python变量作用域_Python编程之路
查看>>
js 数组,字符串,json互相转换(在select实现多个输入的时候与后台交互常使用)...
查看>>
js index of()用法
查看>>
XSS原理及防范
查看>>
WPF中Image显示本地图片
查看>>
SVN版本管理
查看>>
哈希表等概率情况下查找成功和查找不成功的平均查找长度的计算
查看>>
SQL 操作结果集 -并集、差集、交集、结果集排序
查看>>
flume监控
查看>>
无法重启ssh
查看>>
Bugly热更新——初探
查看>>
ios12--简易购物车
查看>>
go17---并发
查看>>
守护线程
查看>>